package cn.edu.ctgu.junitTest;
import cn.edu.ctgu.junitTest.ValueParseException;

public class PreminumCaculator {
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public char getIsMarried() {
        return isMarried;
    }

    public void setIsMarried(char isMarried) {
        this.isMarried = isMarried;
    }

    public void setRaise(int raiseNum) {
        this.raise = raiseNum;
    }

    private int age;
    private char sex;
    private char isMarried;
    private int raise;
    private int ErrorException = -100;

    public PreminumCaculator() {

    }

    public int getAgeNum() {
        if (age >= 20 && age < 40)
            return 6;
        else if (age >= 40 && age < 50)
            return 4;
        else if (age < 0 && age > 130)
            throw new ValueParseException("年龄信息错误") ;
        else
            return 2;
    }

    public int getSexNum() {
        if (sex == 'M')
            return 4;
        else if (sex == 'F')
            return 3;
        throw new ValueParseException("性别信息错误") ;
    }

    public int getIsMarriedNum() {
        if (isMarried == 'Y')
            return 3;
        if (isMarried == 'N')
            return 5;
        throw new ValueParseException("是否婚配信息错误只能是Y或N") ;
    }

    public double getRaiseNum() {
        if (raise <= 3 && raise >= 0)
            return -0.5 * raise;
        if (raise > 3)
            return 3;
        throw  new ValueParseException("抚养人数不能小于0") ;
    }
    public void setall (int age , char sex , char isMarried , int raiseNum){
        setAge(age);
        setIsMarried(isMarried);
        setRaise(raiseNum);
        setSex(sex);
    }
    public double getAllNums(int age , char sex , char isMarried , int raiseNum ) {
        double res = 0 ; 
        // agenum 
        setall(age, sex, isMarried, raiseNum);
        assert getAgeNum() > 0;
        assert getRaiseNum() <= 0;
        assert getIsMarriedNum() > 0;
        assert getSexNum() > 0 ;
        res =  res + getAgeNum() ; 
        res =  res + getIsMarriedNum() ;
        res =  res + getRaiseNum(); 
        res =  res + getSexNum() ;
        return  res; 
    }
    
}